With development of computing systems, management of large scale software installations has become a challenging task. Modern computing systems may involve distributed software modules and/or applications, e.g., in an organization, community or data center. Management and maintenance of large scale and/or distributed software applications or systems typically involve tasks such as update procedures, monitoring, version control etc. For example, management of software installations in an organization may include updating software modules or monitoring various aspects on a large number of servers and/or user computers.
In another example, management of a virtual machine (VM) environment may involve management of a large number of virtual machines. The term “virtual machine” (VM) generally refers to an isolated operating system (also referred to as a “guest operating system”) that runs on a physical machine. A VM may be a software implementation of a machine (e.g., a computer) that executes programs as if it were a physical computer, having its own resources, e.g., a central processing unit (CPU), memory (e.g., random access memory (RAM)), hard disk and network interface cards (NICs).
A number of VMs may be (and typically are) executed on a single hardware machine. For example, a number of different operating systems (e.g., Windows™, Unix™ and Mac OS™) may run on a single hardware machine. One of the essential characteristics of a VM is that applications, programs or services running inside a VM are limited to (or by) the resources provided by the VM. Accordingly, VM technology offers a number of advantages. For example, consolidation may be realized by utilizing a single hardware server in order to execute a number of operating systems. Other advantages may be redundancy and fail over.
However, management of large scale computing, software and/or VM systems may pose a number of challenges. For example, various services (e.g., backup, monitoring and/or software updates, security, compliance, configuration management, inventory management, software distribution, etc.) may need to be managed and/or performed for, or even on, each computer in an organization or on each VM installed on a single computer or on a number of hardware machines.
Additionally, agent software needs to be installed, upgraded, configured and monitored for failures. Once a failure occurs, a troubleshooting process which is often manual is required. In addition, monitoring for agent application resource consumption is required and when needed, resolving of excessive resource consumption. All these management services are performed very often by distributed computing software compromising servers and agent on each endpoint.
It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn accurately or to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity, or several physical components may be included in one functional block or element. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.